/*
 * @Author: Scherger 
 * @Date: 2018-11-28 10:00:32 
 * @Last Modified by: mikey.zhaopeng
 * @Last Modified time: 2019-02-14 11:00:15
 */
import goFun from "@/utils/cc-webapp/navigator.js";
import utilsFun from "@/utils/utils.js";

var w_session = 'cd3468cae1244d7cbb5db1ac021b09b6' //启帆
//var w_session = 'e9f452f40550471093aa8d94b6573475' //漫漫账号

var clientType = 'android' //用戶使用的設備類型，

var dev = false


/** get 不支持router跳转，只能在客户端上使用
 * 
 *  @param  {boolean} loginFlag  是否需要跳转登录页， true / false
 * 
 * @Examples
 * 此方法只负责获取 session , 不校验
 * @Examples
 * 没有session默认打开新窗口进入登录页
 * 
 * @Examples
 * loginFlag 
 * true 为跳转
 * false 为返回空 
 * 
 */
function get(loginFlag) {

  return new Promise((resolve, reject) => {

    if (dev) {
      resolve({
        session: w_session,
      })
      return
    }

    this.getSession().then(session => {




      if (session) {

        let sessionData = JSON.parse(session)



        resolve({
          session: sessionData.session,
          userId: sessionData.userId,
          userType: sessionData.userType || null
        })

      } else { //本地没有session

        //检查是否需要跳转首页
        if (loginFlag) {

          let obj = {
            path: utilsFun.splitUrl('login')
          }

          goFun.openTo(obj)

          reject('no session')

        } else {
          resolve({
            session: null,
          })
        }

      }

    })
  })

}

/**
 * 打开登录界面
 * 
 */
function go() {
  let obj = {
    path: utilsFun.splitUrl('login')
  }
  goFun.openTo(obj)
}



/** 检查登录状态 支持router形式
 * @param  {string} gotoPage 跳转页面参数
 * @Example
 * expireAt //三个月失效
 * @Example
 * gotoPage
 * 
 *  let gotoPage = {
      router: this.$router, //默认跳首页没有 router
      path: url,  //跳转的url参数 默认跳首页
    }
 * 
 * 
 */
function check(Page) {

  var GotoData = ''

  if (Page) {
    GotoData = Page
  } else {

    let url = utilsFun.splitUrl('login')

    GotoData = {
      path: url,
      params: {
        text: '这是参数123'
      }
    };

  }

  return new Promise((resolve, reject) => {

    if (dev) {
      resolve(w_session)
      return
    }

    this.getSession().then(session => {

      if (session) {

        let data = JSON.parse(session)

        let etime = data.expireAt
        let toDayTime = new Date().getTime()
        // let toDayTime = new Date().getTime() + 30000000000

        if (toDayTime < etime) {
          // console.log('未过期')

          resolve(data)

        } else {

          // console.log('过期');

          goFun.openTo(GotoData)

        }

      } else {
        //没有session

        goFun.openTo(GotoData)

      }

    })
  })

}

/** 关闭登录页面
 */
function closeLogin() {
  let obj = {
    backPage: 'login'
  }
  goFun.closeW(obj)


}

/** 将session存储到本地中 (异步)
 * @param  {String} data 缓存的登录数据
 */
function setSession(data) {
  return new Promise((resolve, reject) => {
    var setData = {
      key: 'app_session',
      value: JSON.stringify(data)
    };

    native.setStorage(JSON.stringify(setData));

    resolve(data)
  })
}


/** 从本地缓存中同步获取session
 * @returns 返回缓存的登录数据，无则返回 false
 */
function getSession() {

  return new Promise((resolve, reject) => {
    var dataValue = native.getStorage('app_session');

    //console.log("getSession dataValue", dataValue);


    if (dataValue) {
      resolve(dataValue)

    } else {
      resolve(false)
    }
  })

}

/** 退出登錄
 * 
 */
function returnLogin() {
  native.showToast("正在退出當前帳號！");
  native.removeStorage('app_session');
  native.showToast("成功退出當前帳號！");
}

export default {
  go,
  get,
  check,
  getSession,
  setSession,
  closeLogin,
  returnLogin,
}
